/* 常见正则
 * 登录密码--由数字和字母组成，并且要同时含有数字和字母，且长度要在8-16位之间。
 * 邮箱
 * 手机号
 * 是否固定电话
 * 是否短信验证码
 * 面积
 * 姓名
 * 账号名
 * 验证身份证号码
 */

export const validate = {
	password: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/,
	email: /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/,
	mobile: /^[1][3-9][0-9]{9}$/,
	landline: /^\d{3,4}-\d{7,8}(-\d{3,4})?$/,
	verify: /^\d{6}$/,
	number: /^[0-9]*$/,
	area: /^[0-9]{2,4}$/,
	bank: /^([1-9]{1})(\d{14}|\d{18})$/,
	name: /^[\u4e00-\u9fa50-9A-Za-z]{2,20}$/,
	userName: /^[A-Za-z0-9_]{4,10}$/,
	enNumber: /^[0-9a-zA-Z]+$/,
	wechat: /^[-_|a-zA-Z]{1}([-_a-zA-Z0-9])+$/,
	longitude: /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,10})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,10}|180)$/, //经度
	latitude: /^(\-|\+)?([0-8]?\d{1}\.\d{0,10}|90\.0{0,10}|[0-8]?\d{1}|90)$/, //纬度
	hexColor: /^#([a-fA-F\d]{6}|[a-fA-F\d]{3})$/, // hex色值
	chinese: /[\u4e00-\u9fa5]+/, //中文
	money: /^\d+\.\d{2}$/, // 货币校验
	idcard: /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/, // 身份证号码
	allspace: /\s*/g,
	price: /^[+]{0,1}(\d+)$|^[+]{0,1}(\d+\.\d+)$/,
	/**
	 * 格式化验证
	 * @param type 需要验证的正则方法，对应上面的正则公式
	 * @param str 需要验证的字符串
	 */
	reg(type, str) {
		return !type ? (!str ? false : true) : this[type].test(str);
	},

	/**
	 * 格式化验证
	 * @param reg 自定义的正则方法
	 * @param str 需要验证的字符串
	 */
	customeReg(reg, str) {
		return !reg ? (!str ? false : true) : reg.test(str);
	},

	//校验值不能小于0
	targetVal(msg) {
		return (rule, value, callback) => {
			if (Number(value) <= 0) {
				return callback(new Error(msg));
			}
			return callback();
		};
	}
};

